PHPバージョン
4+
$str = 'Hello, World!';
$substring = 'World';

$pos = strpos($str, $substring);

if ($pos !== false) {
    echo "見つかった位置: $pos";
} else {
    echo '見つかりません。';
}

// 出力: 見つかった位置: 7

/*
 * 注意してください。
 * 文字列のインデックスは0から始まります。
 * 最初の文字のインデックスは0、2番目の文字のインデックスは1です。
 */
strpos(string $haystack, string $needle, int $offset = 0): int|false
$str = 'Hello, World!';
$substring = 'world';

$pos = strpos($str, $substring);

if ($pos === false) {
    echo "大文字と小文字が一致しないため、'world!'を見つけることができません。";
} else {
    echo "文字列に'world!'が含まれています。";
}

// 出力: "大文字と小文字が一致しないため、'world!'を見つけることができません。"
$newstring = 'abcdef ghijk';
$pos = strpos($newstring, 'a');

var_dump($pos); // int(0)
$str = 'Hello, World!';
$substring = '';

$pos = strpos($str, $substring); // Warning: strpos(): Empty needle in
$str = 'Hello, World!';
$substring = 'Hello';

$pos = strpos($str, $substring);

var_dump($pos); // int(0)

if ($pos === false) {
    echo "文字列に'Hello'が見つかりません。";
} else {
    echo "文字列に'Hello'が含まれています。";
}

// 出力: "文字列に'Hello'が含まれています。"
$str = 'はじめまして。ようこそ!';
$substring = 'ようこそ';

$pos = strpos($str, $substring);

if ($pos !== false) {
    echo "見つかった位置: $pos";
} else {
    echo '見つかりません。';
}

// 出力: 見つかった位置: 21 ← 意図しない結果が発生します。
$file_path = '/var/www/html/project/files/document.txt';
$directory_name = '/var/www/html/project';

// ファイルパスに特定のディレクトリが含まれているか確認
if (strpos($file_path, $directory_name) !== false) {
    echo 'ファイルは指定されたディレクトリに属しています。';
} else {
    echo 'ファイルは指定されたディレクトリに属していません。';
}

// 出力: 'ファイルは指定されたディレクトリに属しています。'

// ファイルパスからファイル名を抽出
$file_name = substr($file_path, strrpos($file_path, '/') + 1);
echo "ファイル名: $file_name";

// 出力: "ファイル名: document.txt"